/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.unicon.autoservicio.view.bean;

/**
 *
 * @author JMENDOZA | 20140205 | Proy. 817: Eficiencia en Obra
 */

import com.unicon.autoservicio.dao.DesempenioClienteDAO;
import com.unicon.autoservicio.bean.EficienciaObraViewBean;
import com.unicon.autoservicio.util.Cache;
import com.unicon.autoservicio.util.Util;
import com.unicon.sdc.ds.ws.EficienciaObraBean;
import com.unicon.sdc.ds.ws.AcuerdoAutBean;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.event.ActionEvent;
import javax.faces.event.PhaseId;
import javax.faces.model.SelectItem;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.XMLGregorianCalendar;

public class ConsultaEficienciaObraBean extends BaseManageBean{
    private Date fechaPedidoDesde;
    private Date fechaPedidoHasta;
    private SelectItem[] lstAcoItems;
    private String mensajeEfiObra;
    private List<EficienciaObraViewBean> efeObraVB;
    private List<EficienciaObraBean> efeObra;
    
    
    
        /**
     * @return the lstAcoItems
     */
    
    
    //<editor-fold defaultstate="collapsed" desc="Metodos">
    
    private void listaDespachos() throws DatatypeConfigurationException{
        UsuarioBean usuarioBean = getSessionUser();
        
        XMLGregorianCalendar fecini, fecfin;
        fecini = Util.dateToXMLGregorian(getFechaPedidoDesde());
        fecfin = Util.dateToXMLGregorian(getFechaPedidoHasta());
        efeObra = null;
        efeObraVB = null;
        efeObraVB = new ArrayList<EficienciaObraViewBean>();
        DesempenioClienteDAO desClienteDao = new DesempenioClienteDAO();
        efeObra = desClienteDao.getEficienciaObra(
                usuarioBean.getCodigoUsuario(),
                usuarioBean.getCodigoCliente(),
                fecini,
                fecfin,
                "",
                usuarioBean.getCodigoUsuario(),
                usuarioBean.getClave());
        EficienciaObraViewBean eficienciaObrVB = null;
        for (EficienciaObraBean efeObr : efeObra) {
            
            eficienciaObrVB = new EficienciaObraViewBean(efeObr);
            
            getEfeObraVB().add(eficienciaObrVB);
        }
    }
    
    //</editor-fold>
    
    //<editor-fold defaultstate="collapsed" desc="Metodos ActionEvent">
    
    public boolean btnBuscarActionPerformed(ActionEvent event) throws DatatypeConfigurationException   {
        setMensajeEfiObra("");
        
        if (!event.getPhaseId().equals(PhaseId.INVOKE_APPLICATION)) {
            event.setPhaseId(PhaseId.INVOKE_APPLICATION);
            event.queue();
            return true;
        }
        
        if (getFechaPedidoDesde().compareTo(getFechaPedidoHasta()) > 0) {
            setMensajeEfiObra("La fecha Desde debe ser menor a la fecha Hasta.");
            return true;
        }
        
        this.listaDespachos();
        
        return true;
    }
    
    //</editor-fold>
    
    
    //<editor-fold defaultstate="collapsed" desc="Getter and Setter">
    public SelectItem[] getLstAcoItems() {

        UsuarioBean usuarioBean = getSessionUser();
        try {
            AppCacheKey ck = new AppCacheKey("lstAcoItems", usuarioBean);
            lstAcoItems = Cache.get(ck);
            
            if (lstAcoItems == null || lstAcoItems.length < 2) {
                List<AcuerdoAutBean> acoAuts;          
                DesempenioClienteDAO desClienteDAO = new DesempenioClienteDAO();
                acoAuts = desClienteDAO.getAcuerdosAut(
                                                        usuarioBean.getCodigoUsuario(),
                                                        usuarioBean.getCodigoCliente(),
                                                        "",
                                                        "");
                lstAcoItems = new SelectItem[acoAuts.size() + 1];
                SelectItem s;
                int cont = 0;
                for (AcuerdoAutBean acoAut : acoAuts) 
                {
                    s = new SelectItem(acoAut.getCoAco(), acoAut.getDeObr());
                    lstAcoItems[cont] = s;
                    cont ++;                    
                }
                
                Cache.put(ck, lstAcoItems);
                
            }
        } catch (Exception e) {

            logger.error(e.getMessage(), e);
        }

        return lstAcoItems;
    }

    
    public void setLstAcoItems(SelectItem[] lstAcoItems) {
        this.setLstAcoItems(lstAcoItems);
    }    

    public Date getFechaPedidoDesde() {
        return fechaPedidoDesde;
    }

    public void setFechaPedidoDesde(Date fechaPedidoDesde) {
        this.fechaPedidoDesde = fechaPedidoDesde;
    }

    public Date getFechaPedidoHasta() {
        return fechaPedidoHasta;
    }

    public void setFechaPedidoHasta(Date fechaPedidoHasta) {
        this.fechaPedidoHasta = fechaPedidoHasta;
    }

    public String getMensajeEfiObra() {
        return mensajeEfiObra;
    }

    public void setMensajeEfiObra(String mensajeEfiObra) {
        this.mensajeEfiObra = mensajeEfiObra;
    }    
    
    public List<EficienciaObraViewBean> getEfeObraVB() {
        return efeObraVB;
    }

    public void setEfeObraVB(List<EficienciaObraViewBean> efeObraVB) {
        this.efeObraVB = efeObraVB;
    }
    //</editor-fold>

    
    
    
    
}
